In 1 đến 10 không có vòng lặp trong python

Cho hai số N và K, vấn đề của chúng ta là trừ một số K từ N cho đến khi số (N) lớn hơn 0 (0), khi N trở thành số âm hoặc 0 thì chúng ta bắt đầu thêm K vào số đó cho đến khi số đó trở thành số nguyên

Ví dụ

N = 10
K = 4

đầu ra

10 6 2 -2 2 6 10

thuật toán

  • chúng ta gọi đi gọi lại hàm cho đến khi N lớn hơn 0 (trong mỗi lần gọi hàm, chúng ta trừ K từ N )

  • Khi số trở thành âm hoặc 0, chúng tôi bắt đầu thêm K trong mỗi lệnh gọi hàm cho đến khi số trở thành số ban đầu

  • Ở đây, chúng tôi đã sử dụng một hàm duy nhất cho mục đích cộng và trừ nhưng để chuyển đổi giữa hàm cộng hoặc trừ, chúng tôi đã sử dụng cờ biến kiểu Boolean

Bây giờ hãy quan sát việc triển khai trong Python

Thí dụ

def PrintNumber(N, Original, K, flag):
   #print the number
   print(N, end = " ")
   #if number become negative
   if (N <= 0):
      if(flag==0):
         flag = 1
      else:
         flag = 0
   if (N == Original and (not(flag))):
      return
   # if flag is true
   if (flag == True):
      PrintNumber(N - K, Original, K, flag)
      return
   if (not(flag)):
      PrintNumber(N + K, Original, K, flag);
      return
N = 10
K = 4
PrintNumber(N, N, K, True)

đầu ra

10 6 2 -2 2 6 10

Ở đây tất cả các biến được khai báo trong không gian tên chung như trong hình dưới đây -

In 1 đến 10 không có vòng lặp trong python

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu về thuật ngữ để in một chuỗi số mà không sử dụng bất kỳ loại cấu trúc vòng lặp nào trong Python 3. x. Hoặc sớm hơn

Trong hướng dẫn này, chúng ta sẽ xem xét một chương trình Python để in các số trong một phạm vi không có vòng lặp. Có, không có bất kỳ vòng lặp nào. Chúng tôi sẽ sử dụng các khái niệm Python sau

  • câu lệnh if…else
  • chức năng
  • đệ quy

Các số trong một phạm vi không có vòng lặp

Chúng tôi sẽ thực hiện một cuộc gọi hàm đệ quy để in các số. Chúng tôi sẽ lấy giới hạn trên và dưới từ người dùng và in các số bao gồm các giới hạn, tôi. e. bao gồm

def print_num(lower, upper):
    if(upper + 1 > lower):
        print_num(lower, upper - 1)
        print(upper)

lower = int(input("Enter lower limit: "))
upper = int(input("Enter upper limit: "))

print_num(lower, upper)

Đầu tiên, chúng tôi yêu cầu người dùng nhập giới hạn dưới và trên của phạm vi bằng cách sử dụng int(input(“Nhập giới hạn dưới. “)) và int(input(“Nhập giới hạn trên. “)). Ở đây, input() in thông báo trên bàn điều khiển và cũng đọc đầu vào được cung cấp dưới dạng chuỗi. Nhưng chúng tôi muốn đầu vào là một int để chúng tôi có thể thực hiện các phép toán trên chúng và để làm được điều đó, chúng tôi sử dụng int()

print_num() là chức năng đệ quy của chúng tôi. Phải mất hai đối số - giới hạn dưới và giới hạn trên. Bên trong chức năng, chúng tôi so sánh trên + 1 (điều này là để trên được bao gồm trong phạm vi) với giới hạn dưới. Nếu điều kiện được đáp ứng, tôi. e. nó là True thì chúng ta gọi đệ quy print_num() với các tham số là upper – 1 và Lower. Điều này tiếp tục cho đến khi trên trở thành thấp hơn. Tại thời điểm này, tất cả các câu lệnh in được lưu trữ trên ngăn xếp cuộc gọi đều được in

Trong lập trình, Vòng lặp được sử dụng để lặp lại một khối mã cho đến khi đáp ứng một điều kiện cụ thể. Vòng lặp for là một cấu trúc kiểm soát việc lặp lại cho phép bạn viết một vòng lặp cần thực hiện một số lần cụ thể một cách hiệu quả

Ngoài ra, chúng tôi sẽ sử dụng một trong các chức năng tích hợp sẵn của Python range(). Chức năng này được sử dụng rộng rãi trong các vòng lặp để kiểm soát số lần vòng lặp phải chạy. Nói một cách đơn giản, phạm vi được sử dụng để tạo một chuỗi giữa các giá trị đã cho

Để hiểu rõ hơn về các Python này, các khái niệm nên đọc các bài viết sau

for i in range(1, 11):
    print(i)

đầu ra

1
2
3
4
5
6
7
8
9
10

Giải trình

Vòng lặp for in số từ 1 đến 10 bằng cách sử dụng hàm range() ở đây i là một biến tạm thời đang lặp qua các số từ 1 đến 10

Điều đáng nói là tương tự như việc lập chỉ mục danh sách trong phạm vi bắt đầu từ 0, có nghĩa là range( j )sẽ in chuỗi cho đến ( j-1) do đó đầu ra không bao gồm 6

Một vấn đề lập trình mới đang là xu hướng gần đây - viết chương trình để in các số từ một đến một trăm mà không sử dụng bất kỳ vòng lặp nào hoặc đề cập đến các số trong nguồn. Đương nhiên, tôi quan tâm đến một giải pháp trong Python

Tôi đã nhận được nhiều câu trả lời tuyệt vời trên Twitter. Nhưng trước tiên hãy để tôi chỉ cho bạn cách tôi tiếp cận nó. Tôi đang tìm kiếm một giải pháp chung và dễ đọc hơn giải pháp ngắn nhất. Quá trình suy nghĩ của tôi là - ngay cả khi chúng ta không thể đề cập đến số, chúng ta có thể chuyển đổi các loại không phải số thành số. Vì vậy, tôi đã thử với Booleans và Strings

zero = int(False)
one = int(True)
hundred = int(f"{one}{zero}{zero}")


def shownum(i):
    if i <= hundred:
        print(i)
        shownum(i + one)


shownum(one)

Bắt đầu từ đầu, chúng tôi nhận được 0 và 1 từ các giá trị Sai và Đúng. Sau đó, để tạo 100, giới hạn trên của vòng lặp, chúng tôi sử dụng phương pháp nội suy chuỗi yêu thích mới – f-strings

Khắc phục hạn chế không sử dụng vòng lặp khá đơn giản - chỉ cần sử dụng Đệ quy. Mặc dù vậy, chúng ta phải cẩn thận, Python không có Tối ưu hóa cuộc gọi đuôi (vì Guido thích có các dấu vết ngược phù hợp hơn), vì vậy nếu bạn tiếp tục tăng giới hạn trên của vòng lặp, bạn sẽ bị tràn ngăn xếp

Whiz trẻ em trên Twitter

Đối với tweet của tôi ngày hôm qua, có nhiều giải pháp tuyệt vời ngắn hơn nhiều so với của tôi. Dưới đây là một số trong số họ

Tiếng thét dài của Abhiram

print([*range(len('a'), len('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'))])
😂

– Abhiram R (@abhicantdraw) ngày 22 tháng 3 năm 2021

Điều tôi thích ở đây là việc sử dụng toán tử * một cách thông minh để chuyển đổi đối tượng phạm vi thành một danh sách một cách ngắn gọn. Và tất nhiên, việc sử dụng tự do chữ “a”-s chỉ hét lên “Tôi không thể bị nhìn thấy”

Ngắn gọn và súc tích của Rohan

danh sách (bản đồ (int, phạm vi (ord (b"e"))))

– Rohan Verma (@rhnvrm) ngày 22 tháng 3 năm 2021

Khéo léo tận dụng hàm ord tích hợp sẵn của Python để lấy mã ASCII của chữ thường 'e' (nó là 101 chứ không phải 100), chúng ta gần như có một người chiến thắng mã chơi gôn. Sắp xếp vì nó bắt đầu đếm từ 0 chứ không phải 1 như câu hỏi ban đầu được đặt ra. Nhưng đây là Twitter, một sự điều chỉnh đã sớm xuất hiện

Lưu ý rằng các chức năng map và int không thực sự cần thiết ở đây, làm cho nó thậm chí còn ngắn hơn. Trong một tin nhắn trực tiếp, Rohan đã chia sẻ một giải pháp cải tiến bắt đầu đếm từ một

________số 8_______

Tiến hóa bởi Anirudh

danh sách(phạm vi(ord('a')-ord('a'), ord('e')))

– Anirudh Menon (@anikmenon) ngày 23 tháng 3 năm 2021

Với một sửa chữa nhỏ, mã này sửa số lần bắt đầu thành 1. Như một điểm nhấn thú vị, các chuỗi tạo thành từ 'bae', đây phải là thuật ngữ dễ thương nhất dành cho một người bạn

Điều này có thể ngắn hơn bởi Arun

Với lợi ích của việc nhìn thấy tất cả các ý tưởng, cuối cùng tôi có thể đưa ra giải pháp ngắn nhất của mình (với 23 ký tự)

[*range(True,ord("e"))]

Vì vậy, đó là kết thúc của môn đánh gôn mã này đối với tôi. Đó là, cho đến khi ai đó nghĩ ra thứ gì đó ngắn hơn

Làm thế nào bạn có thể in từ 1 đến 10 *?

h> void main() { int i; . \n"); for (i = 1; i <= 10; i++) //Lặp lại 10 lần { printf("%d \t", i); //In số. } }printf("The first 10 natural numbers are:\n "); for (i = 1; i <= 10; i++) //Iteration 10 times { printf("%d \t", i); //Print the number. } }

Làm cách nào để in 1 đến 10 bằng cách sử dụng đệ quy trong Python?

countdown(n-1) #đây là đệ quy (gọi chính nó). print(n) #in các số. đếm ngược(10) # đối số chức năng. .
Bạn không phải trả lại bất cứ thứ gì từ hàm đệ quy chỉ in các giá trị
Để in theo thứ tự tăng dần, câu lệnh in phải được đặt sau lệnh gọi đệ quy

Làm cách nào để in từ 1 đến 10 theo thứ tự ngược lại bằng vòng lặp for?

C cho vòng lặp. Bài tập-37 có lời giải .
Trình bày bằng hình ảnh
Giải pháp mẫu
C Code: #include void main(){ int num,r,sum=0,t; printf("Input a number: "); scanf("%d",&num); for(t=num;num!=0;num=num/10){ r=num % 10; sum=sum*10+r; } printf("The number in reverse order is : %d \n",sum); } .. .
Sơ đồ

Làm cách nào để in từ 1 đến 10 số mà không cần sử dụng vòng lặp trong C?

In số mà không cần sử dụng vòng lặp .
khoảng trống in(int, int);
int main() { int n;
scanf("%d", &n);
in(1, n);
trả về 0;
void print(int s, int n) { if (s > n) return;
printf("%d\n", s);
in(++s, n);