পাইথনে, আমি কীভাবে এক লাইনের কোডের এন অক্ষরের একটি স্ট্রিং তৈরি করব?


148

পাইথনে আমার n অক্ষরগুলির সাথে একটি স্ট্রিং তৈরি করতে হবে। বিদ্যমান পাইথন গ্রন্থাগারের সাথে এটি অর্জনের জন্য কি একটি লাইনের উত্তর আছে? উদাহরণস্বরূপ, আমার 10 টি অক্ষরের একটি স্ট্রিং দরকার:

string_val = 'abcdefghij'

23
কোড অবলম্বন প্রতিযোগিতাগুলিতে "কোডের এক লাইনে" রেখে দিন। কোনও সমস্যার সমাধান যখন স্বাভাবিকভাবেই একটি লাইন হিসাবে লেখা হয়, তা হবে; অন্যথায় এটি করা উচিত নয়। এটিকে নিজস্ব লক্ষ্য হিসাবে ব্যবহার করা বাজে কোডের একটি গ্যারান্টিযুক্ত পথ।
গ্লেন মেইনার্ড

3
অবশ্যই, যদি না এটি হোমওয়ার্ক। কোন ক্ষেত্রে, "কোডের এক লাইনে" ছেড়ে দিন তবে সত্যবাদী হন এবং [হোমওয়ার্ক] ট্যাগ অন্তর্ভুক্ত করুন।
এস .লট

5
এটি আসলে কোনও হোমওয়ার্কের প্রশ্ন নয়, আমার পরীক্ষার স্ক্রিপ্টগুলিতে আমার কেবল মাত্র দৈর্ঘ্যের একটি দৈর্ঘ্যের প্রয়োজন। আমি ভুলে গিয়েছিলাম যে পাইথনে, একটি চরকে n দ্বারা গুণিত করা যেতে পারে যেখানে n আমি যা চাই তা অর্জন করার জন্য ধনাত্মক পূর্ণসংখ্যা।
থিয়েরি ল্যাম

উত্তর:


310

কেবল একই বর্ণটি 10 ​​বার পুনরাবৃত্তি করতে:

string_val = "x" * 10  # gives you "xxxxxxxxxx"

এবং যদি আপনি nএলোমেলো ছোট ছোট অক্ষরগুলির মতো আরও জটিল কিছু চান তবে তা এখনও কোডের একমাত্র লাইন (আমদানির বিবরণী গণনা এবং সংজ্ঞা না দিয়ে n):

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))

9

প্রথম দশটি ছোট হাতের অক্ষর হ'ল string.lowercase[:10](যদি আপনি stringআগে আদর্শ লাইব্রেরি মডিউলটি আমদানি করে থাকেন তবে অবশ্যই ;-)।

"10 টি অক্ষরের একটি স্ট্রিং তৈরি করার" অন্যান্য উপায়: 'x'*10(সমস্ত দশটি অক্ষর ছোট ছোট; x;-), ''.join(chr(ord('a')+i) for i in xrange(10))(আবার প্রথম দশটি ছোট হাতের অক্ষর), ইত্যাদি ইত্যাদি ;-) থাকবে।


6
পাইথন ৩.১.১-এ, এটি স্ট্রিং.এএসসিআই_ ব্লারকেস আসলে।
লাসে ভি কার্লসেন 21

1
হ্যাঁ, পাইথন 3 সরানো হয়েছে .lowercase( ascii_lowercaseসাম্প্রতিক পাইথন 2 এর পাশাপাশি পাইথন 3 এও রয়েছে)।
অ্যালেক্স মার্তেলি

5

আপনি যদি কেবল কোনও চিঠি চান:

 'a'*10  # gives 'aaaaaaaaaa'

আপনি যদি ধারাবাহিক অক্ষর চান (26 অবধি):

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'

3

"এক লাইনে" কেন? আপনি এক লাইনে কিছু ফিট করতে পারেন।

ধরে নিই যে আপনি তাদের 'ক' দিয়ে শুরু করতে চান এবং প্রতিবার একটি চরিত্রের মাধ্যমে বৃদ্ধি (মোড়ানোর সাথে> 26), এখানে একটি লাইন রয়েছে:

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'

2
আপনি কিছু এক-লাইনে ফিট করতে পারেন, তাই না? বেশ দাবি, পুনরায়: পাইথন :)
গ্রেগ লিন্ড

6
গ্রেগ: পাইথন সেমিকোলনগুলিকে স্টেটমেন্ট ডেলিমিটার হিসাবে মঞ্জুরি দেয়, তাই আপনি যদি চান তবে একটি সম্পূর্ণ প্রোগ্রামকে এক লাইনে রাখতে পারেন।
জন মিলিকিন

2
আপনি যদিও সেমিকোলন দিয়ে স্বেচ্ছাসেবী প্রবাহ নিয়ন্ত্রণ করতে পারবেন না। নেস্টেড লুপগুলি উদাহরণস্বরূপ।
পুনরাবৃত্তি

3

এটি প্রশ্নটি একটু দূরে থাকতে পারে তবে উত্পন্ন স্ট্রিংয়ের এলোমেলোভাবে আগ্রহী তাদের জন্য, আমার উত্তরটি হবে:

import os
import string

def _pwd_gen(size=16):
    chars = string.letters
    chars_len = len(chars)
    return str().join(chars[int(ord(c) / 256. * chars_len)] for c in os.urandom(size))

দেখুন এই উত্তর এবং random.pyআরও জ্ঞানের জন্য 'র উৎস।


2

আপনি যদি বারবার অক্ষর ব্যবহার করতে পারেন তবে আপনি *অপারেটরটি ব্যবহার করতে পারেন :

>>> 'a'*5

'aaaaa'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.